/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ec.com.farmaciassantamartha.comprobantes.portal.sql;

import ec.com.farmaciassantamartha.comprobantes.portal.bean.Comprobante;
import ec.com.farmaciassantamartha.comprobantes.portal.bean.TipoDocumento;
import ec.com.farmaciassantamartha.comprobantes.portal.bean.Usuario;
import ec.com.farmaciassantamartha.comprobantes.portal.hbn.ComprobanteDaoHbn;
import ec.com.farmaciassantamartha.comprobantes.portal.util.Archivo;
import ec.com.farmaciassantamartha.comprobantes.portal.util.AutorizacionWrapper;
import ec.com.farmaciassantamartha.comprobantes.portal.util.ConexionSQL;
import ec.com.farmaciassantamartha.comprobantes.portal.util.Parser;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Rolando
 */
public class ComprobanteSQL {

    public static void insertar(String rutaXML, String rutaPDF, int idUsuario) {
        try {
            AutorizacionWrapper aut = Parser.unmarshall(rutaXML);
            String xml = Archivo.archivoToString(rutaXML);
            TipoDocumento cod_doc = new TipoDocumento();
            cod_doc.setId(TipoDocumentoSQL.obtenerId(Parser.getTagValue(xml, "codDoc")));
            String claveAcceso = Parser.getTagValue(xml, "claveAcceso");
            //--
            Comprobante comprobante = new Comprobante();
            comprobante.setTipoDocumento(cod_doc);
//            comprobante.setXml(xml);
            comprobante.setNumeroAutorizacion(aut.getNumeroAutorizacion());
            comprobante.setFechaAutorizacion(aut.getFechaAutorizacion());
            comprobante.setPathXml(rutaXML);
            comprobante.setClaveAcceso(claveAcceso);
            Usuario usuario = new Usuario();
            usuario.setId(idUsuario);
            comprobante.setUsuario(usuario);
            comprobante.setPathPdf(rutaPDF);
            ComprobanteDaoHbn dao = new ComprobanteDaoHbn();
            dao.save(comprobante);
            //--
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public static List<Comprobante> listarComprobantes(long idUsuario) {
        List<Comprobante> lstComprobantes = new ArrayList<Comprobante>();
        PreparedStatement pst = null;
        Connection cn = null;
        try {
            cn = ConexionSQL.getConexion();
            pst = cn.prepareStatement("select * from comprobante c inner join tipo_documento t on c.id_tipo_documento=t.id where c.id_usuario=?");
            pst.setLong(1, idUsuario);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Comprobante comprobante = new Comprobante();
                comprobante.setId(rs.getInt(1));
                //--
                TipoDocumento tp = new TipoDocumento();
                tp.setCodigo(rs.getString(10));
                comprobante.setTipoDocumento(tp);
                //--
//                String pathXml = rs.getString(7);
                comprobante.setPathXml(rs.getString(7));
                comprobante.setPathPdf(rs.getString(8));
                comprobante.setNumeroAutorizacion(rs.getString(5));
                comprobante.setFechaAutorizacion(rs.getString(6));
                comprobante.setClaveAcceso(rs.getString(4));
//                comprobante.set
                lstComprobantes.add(comprobante);
//                comprobante.setPdf(rs.getString(7));
            }
        } catch (SQLException ex) {
            lstComprobantes = null;
            ex.printStackTrace();
        } finally {
            if (pst != null) {
                try {
                    pst.close();
                } catch (SQLException ex) {
                    lstComprobantes = null;
                    ex.printStackTrace();
                }
            }
            if (cn != null) {
                try {
                    cn.close();
                } catch (SQLException ex) {
                    lstComprobantes = null;
                    ex.printStackTrace();
                }
            }
        }
        return lstComprobantes;
    }

    public static void main(String[] args) {
//        for (int i = 0; i < 80; i++) {
//            insertar("C:\\XML_AUT\\1310201406099151520800110010010000000020000000011.xml", "C:\\XML_AUT\\1310201406099151520800110010010000000020000000011.pdf", 1);
//        }
        List<Comprobante> lst = listarComprobantes(1);
        for (Comprobante comprobante : lst) {
            System.out.println(comprobante);
        }
    }
}
